import matplotlib.pyplot as plt
%matplotlib inline

plt.figure()
plt.plot([1,0,9], [4,5,6])
plt.show()


# 展现上海一周的天气，比如星期一到星期天的温度
import matplotlib.pyplot as plt

# 1.创建画布
plt.figure(figsize=(20,8), dpi=80)

# 2.绘制图像
plt.plot([1,2,3,4,5,6,7], [17,17,18,15,11,11,13])

# 4.保存图片（必须在show之前保存，否则保存的是一个空白的图片，因为当调用plt.show()时，会释放figure资源）
plt.savefig("test78.png")

# 3.显示图像
plt.show()

# 4.保存图片（必须在show之前保存，否则保存的是一个空白的图片）
# plt.savefig("test88.png")


# 需求画出某城市11点到12点1小时内每分钟的温度变化折线图，温度范围在15度~18度
import matplotlib.pyplot as plt
import random

# 1.准备数据 
x = range(60)
y_shanghai = [random.uniform(15,18) for i in x]

# 2.创建画布
plt.figure(figsize=(20,8), dpi=100)

# 3.绘制图像
plt.plot(x, y_shanghai)

# 修改x，y刻度
# 准备x的刻度说明
x_label = ["11点{}分".format(i) for i in x]
plt.xticks(x[::5], x_label[::5])
# plt.yticks(range(41)[::5])
plt.yticks(range(0, 41, 5))

# 处理中文不显示的问题
# 使用黑体显示中文
plt.rcParams['font.sans-serif'] = ['SimHei']
 # 正常显示负号
plt.rcParams['axes.unicode_minus'] = False

# 添加网格显示
plt.grid(linestyle='--', alpha=0.5)

# 添加坐标名称
plt.xlabel("时间变化")
plt.ylabel('温度℃')
# 添加图表名称
plt.title("某城市11点到12点每分钟的温度变化状况")

# 4.显示图像
plt.show()





# 需求：再添加一个城市的温度变化  
# 收集到北京当天温度变化情况，温度在1度到3度
import matplotlib.pyplot as plt
import random

# 1.准备数据 
x = range(60)
y_shanghai = [random.uniform(15,18) for i in x]
y_beijing = [random.uniform(1,3) for i in x]

# 2.创建画布
plt.figure(figsize=(20,8), dpi=100)

# 3.绘制图像（设置颜色和线的风格）
plt.plot(x, y_shanghai, color="r", linestyle="--", label="上海")
plt.plot(x, y_beijing, color="b", linestyle=":", label="北京")

# 显示图例
# plt.legend() 默认显示在右上角
# 显示在左上角
# plt.legend(loc="upper left")
# 显示在右下角
plt.legend(loc = 4)

# 修改x，y刻度
# 准备x的刻度说明
x_label = ["11点{}分".format(i) for i in x]
plt.xticks(x[::5], x_label[::5])
# plt.yticks(range(41)[::5])
plt.yticks(range(0, 41, 5))

# 处理中文不显示的问题
# 使用黑体显示中文
plt.rcParams['font.sans-serif'] = ['SimHei']
 # 正常显示负号
plt.rcParams['axes.unicode_minus'] = False

# 添加网格显示
plt.grid(linestyle='--', alpha=0.5)

# 添加坐标名称
plt.xlabel("时间变化")
plt.ylabel('温度℃')
# 添加图表名称
plt.title("上海和北京两市11点到12点每分钟的温度变化状况")

# 4.显示图像
plt.show()





# 需求：再添加一个城市的温度变化  
# 收集到北京当天温度变化情况，温度在1度到3度
import matplotlib.pyplot as plt
import random

# 1.准备数据 
x = range(60)
y_shanghai = [random.uniform(15,18) for i in x]
y_beijing = [random.uniform(1,3) for i in x]

# 2.创建画布
figure, axes = plt.subplots(nrows=1,ncols=2,figsize=(20, 8), dpi=80)

# 3.绘制图像（设置颜色和线的风格）
axes[0].plot(x, y_shanghai, color="r", linestyle="--", label="上海")
axes[1].plot(x, y_beijing, color="b", linestyle=":", label="北京")

# 显示图例
axes[0].legend()
axes[1].legend()

# 修改x，y刻度
# 准备x的刻度说明
x_label = ["11点{}分".format(i) for i in x]
axes[0].set_xticks(x[::5], x_label[::5])
axes[0].set_yticks(range(0, 41, 5))
axes[1].set_xticks(x[::5], x_label[::5])
axes[1].set_yticks(range(0, 41, 5))

# 处理中文不显示的问题
# 使用黑体显示中文
# axes[0].rcParams['font.sans-serif'] = ['SimHei']
# axes[1].rcParams['font.sans-serif'] = ['SimHei']
 # 正常显示负号
# axes[0].rcParams['axes.unicode_minus'] = False
# axes[1].rcParams['axes.unicode_minus'] = False

# 添加网格显示
axes[0].grid(linestyle='--', alpha=0.5)
axes[1].grid(linestyle='--', alpha=0.5)

# 添加坐标名称
axes[0].set_xlabel("时间变化")
axes[0].set_ylabel('温度℃')
axes[1].set_xlabel("时间变化")
axes[1].set_ylabel('温度℃')
# 添加图表名称
axes[0].set_title("上海市11点到12点每分钟的温度变化状况")
axes[1].set_title("上海市11点到12点每分钟的温度变化状况")

# 4.显示图像
plt.show()





### 绘制正弦函数图像
import numpy as np
import matplotlib.pyplot as plt
# 1.准备数据
x = np.linspace(-10, 10, 1000)
y = np.sin(x)

# 2.创建画布
plt.figure(figsize=(20,8), dpi=80)

# 3.绘制函数图像
plt.plot(x, y)
# 添加网格
plt.grid()

# 4.显示图像
plt.show()


### 绘制抛物线函数图像
import numpy as np
import matplotlib.pyplot as plt
# 1.准备数据
x = np.linspace(-1, 1, 1000)
y = 2 * x ** 2

# 2.创建画布
plt.figure(figsize=(20,8), dpi=80)

# 3.绘制函数图像
plt.plot(x, y)
# 添加网格
plt.grid(linestyle="-.", alpha=0.5)

# 4.显示图像
plt.show()


### 绘制散点图
### 需求：探求房屋面积和房屋价格的关系
import matplotlib.pyplot as plt

# 1.准备数据
x = [225.98, 247.07, 253.14, 457.85, 241.58, 301.01,  20.67, 288.64,
       163.56, 120.06, 207.83, 342.75, 147.9 ,  53.06, 224.72,  29.51,
        21.61, 483.21, 245.25, 399.25, 343.35]
y = [196.63, 203.88, 210.75, 372.74, 202.41, 247.61,  24.9 , 239.34,
       140.32, 104.15, 176.84, 288.23, 128.79,  49.64, 191.74,  33.1 ,
        30.74, 400.02, 205.35, 330.64, 283.45]

## 2.创建画布
plt.figure(figsize=(20,8), dpi=80)

# 3.绘制函数图像
plt.scatter(x, y)

# 添加网格
plt.grid(linestyle="-.", alpha=0.5)

# 4.显示图像
plt.show()






